package com.ys.arr;

/**
 * @author CodeYang
 * @Description 删除数组元素
 * 删除数组{5, 12, 90, 18, 77, 76, 45, 28, 59, 72}索引为2的元素，
 * 删除后：{5, 12, 18, 77, 76, 45, 28, 59, 72，0}。
 * @Date 2020/12/9 15:54
 */
public class 删除数组元素 {

    public static void main(String[] args) {
        int[] arr = {1, 5, 2, 3, 5, 10};
        int targetIndex = 1;
        removeArrForIndex(arr, targetIndex);
        for (int i : arr) {
            System.out.println(i);
        }
    }

    /**
     * 删除在目标数组中,目标索引的元素
     *
     * @param arr         int [] 目标数组,需要操作的数组
     * @param targetIndex 目标索引
     */
    static void removeArrForIndex(int[] arr, int targetIndex) {
        //1 做非空判断,排除空对象错误
        if (null == arr) {
            System.out.println("传入数组不能为空!!!!");
            return;
        }
        //2 判断,目标索引,可能不在数组中(也就是目标元素不在目标数组中),可能产生索引越界错误:ArrIndexOutException
        if (targetIndex < 0 || targetIndex > arr.length) {
            return;
        }
        int len = arr.length;
        //3 实现 删除元素,
        // 根据数组是连续的存储空间的特点,删除指定索引元素,只需要,将 删除索引后的元素向前移动一位,然后补0即可
        // 这里 开始位置应该是 targetIndex  数组的长度取值范围 应该是 [0,arr,len-1]-->[targetIndex,arr,len-1]
        for (int i = targetIndex; i < len - 1; i++) {
            // 移动索引位置---把后一位向前移动
            arr[i] = arr[i + 1];

        }
        arr[len - 1] = 0;

    }
}
